package com.juyu.miliao.api.service;

import com.juyu.miliao.api.dao.mysql.ConfigAppDao;
import com.juyu.miliao.api.dao.mysql.NoticeDao;
import com.juyu.miliao.api.domain.RecommendNotice;
import com.juyu.miliao.common.domain.CommonHead;
import com.juyu.miliao.common.domain.ConfigApp;
import com.juyu.miliao.common.util.VerifyUtil;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

@Service
public class NoticeService {
    @Resource
    NoticeDao noticeDao;
    @Resource
    ConfigAppDao configAppDao;

    public List<RecommendNotice> getNoticeList(HttpServletRequest request){
        //获取到请求信息
        CommonHead commonHead = VerifyUtil.verifyCommonHead(request);
        //确定数据库configApp中的一条信息
        ConfigApp configApp = configAppDao.getConfigApp(commonHead.getAppPackageId(), commonHead.getPhoneSystem());
        //把消息信息中的version转化为int类型 便于比较
        int version = Integer.parseInt(commonHead.getVersionNum().replace(".",""));
        //查询所有公告信息
        List<RecommendNotice> noticeList = noticeDao.getNoticeList();
        ArrayList<RecommendNotice> list = new ArrayList<>();
        for (RecommendNotice rcn : noticeList) {
            //判断头信息的组类型 与数据库的所在组类型 是否相等
            if(configApp.getGroupType()==rcn.getGroupType()){
                //循环数据库公告 把的到的每条公告的 版本号转成int 便于比较
                int msqVersion = Integer.parseInt(rcn.getGroupVersion().replace(".", ""));
                //比较上面两个版本号 如果头信息中的版本号大于等于 数据库中的版本号 返回相对应的公告
                if(version>=msqVersion){
                    list.add(rcn);
                }
            }
        }
        return list;
    }
}
